/**
 * <h3>OpusServiceImpl</h3>
 * <p> 作品服务实现类 </p>
 *
 * <h3>功能描述</h3>
 * <p> 实现了 {@link IOpusService} 接口中定义的作品信息增删改查业务逻辑 </p>
 * <p> 通过调用 {@link OpusMapper} 完成对数据库的操作，支持条件查询、按ID查询、更新、新增和删除等操作 </p>
 *
 * <h3>元数据</h3>
 * <ul>
 *    <li> 作者：郭强</li>
 *    <li> 创建日期：2025年05月06日 21:20:00</li>
 * </ul>
 *
 * <h3>其他信息</h3>
 * <ul>
 *    <li> 参考链接：<a href="https://example.com">官方网页</a></li>
 *    <li> 示例代码：{@code new OpusServiceImpl()} </li>
 * </ul>
 *
 * @apiNote 该类基于 MyBatis Plus 的 ServiceImpl 实现，需确保 OpusMapper 正确注入
 * @implSpec 继承自 {@link ServiceImpl<OpusMapper, OpusDTO>} 并实现 {@link IOpusService} 接口
 * @since 1.0.0
 */

package com.dnndo.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dnndo.system.domain.Opus;
import com.dnndo.system.domain.dto.OpusDTO;
import com.dnndo.system.mapper.OpusMapper;
import com.dnndo.system.service.IOpusService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

/**
 * 作品服务实现类
 */
@Service
public class OpusServiceImpl extends ServiceImpl<OpusMapper, OpusDTO> implements IOpusService {

    private final OpusMapper opusMapper;

    @Autowired
    public OpusServiceImpl(OpusMapper opusMapper) {
        this.opusMapper = opusMapper;
    }

    @Override
    public List<Opus> selectOpusList(OpusDTO dto) {
        return opusMapper.selectOpusList(dto);
    }

    @Override
    public List<HashMap<String, Object>> selectdesignerlist(OpusDTO dto) {
        return opusMapper.selectdesignerlist(dto);
    }

    @Override
    public OpusDTO selectOpusListById(Long opusId) {
        return opusMapper.selectOpusListById(opusId);
    }

    @Override
    public HashMap<String, Object> selectdesignerListById(Long userId) {
        return opusMapper.selectdesignerListById(userId);
    }

    @Override
    public int updateOpusById(OpusDTO opusDTO) {
        return opusMapper.updateOpusById(opusDTO);
    }

    @Override
    public int insertOpus(OpusDTO opusDTO) {
        return opusMapper.insertOpus(opusDTO);
    }

    @Override
    public int deleteOpusById(Integer opusId) {
        return opusMapper.deleteOpusById(opusId);
    }
}
